home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / MATH / NRPAS13 / RAN2.PAS < prev    next >
Pascal/Delphi Source File  |  1991-04-29  |  762b  |  33 lines

  1. FUNCTION ran2(VAR idum: integer): real;
  2. (* Programs using RAN2 must declare the following variables
  3. VAR
  4.    gliy: integer;
  5.    glir: ARRAY [1..97] OF integer;
  6. in the main program. *)
  7. CONST
  8.    m=714025;
  9.    ia=1366;
  10.    ic=150889;
  11.    rm=1.400512e-6;      (* 1.0/m *)
  12. VAR
  13.    j: integer;
  14. BEGIN
  15.    IF (idum < 0) THEN BEGIN
  16.       idum := (ic-idum) MOD m;
  17.       FOR j := 1 TO 97 DO BEGIN
  18.          idum := (ia*idum+ic) MOD m;
  19.          glir[j] := idum
  20.       END;
  21.       idum := (ia*idum+ic) MOD m;
  22.       gliy := idum
  23.    END;
  24.    j := 1 + (97*gliy) DIV m;
  25.    IF ((j > 97) OR (j < 1)) THEN BEGIN
  26.       writeln('pause in routine RAN2'); readln
  27.    END;
  28.    gliy := glir[j];
  29.    ran2 := gliy*rm;
  30.    idum := (ia*idum+ic) MOD m;
  31.    glir[j] := idum
  32. END;
  33.